package com.yfp.operation.controller;

import cn.hutool.core.date.DateUtil;
import com.yfp.common.core.domain.R;
import com.yfp.common.core.web.controller.BaseController;
import com.yfp.common.core.web.page.TableDataInfo;
import com.yfp.operation.domain.dto.MarketInfoDTO;
import com.yfp.operation.service.MarketService;
import com.yfp.operation.domain.vo.SaleMarketInfoVO;
import com.yfp.operation.domain.vo.TransactionVO;
import com.yfp.operation.domain.vo.WeekMarketVO;
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static com.yfp.common.core.utils.PageUtils.startPage;

/**
 * 
 * @version 1.0
 * @date 2024-05-27 17:08
 */
@RestController
@RequestMapping("/market")
@Tag(name = "交易数据-投资人")
public class MarketController extends BaseController {
    @Autowired
    private MarketService marketService;

    /**
     * 交易数据-统计销售接口（维度本月、本周、日）
     *
     * @return
     */
    @GetMapping
    @Operation(summary = "统计销售接口（维度本月、本周、日）", description = "交易数据统计页面使用")
    public R<TransactionVO> dealInfo() {
        return R.ok(marketService.dealInfo());
    }


    /**
     * 每月销售详情
     *
     * @return
     */
    @GetMapping("/monthly")
    @Operation(summary = "每月销售详情", description = "交易数据统计页面使用")
    public R<List<SaleMarketInfoVO>> monthlyMarket() {
        return R.ok(marketService.monthlyMarket());
    }


    /**
     * 每周活跃度
     */
    @GetMapping("/liveness")
    @Operation(summary = "每周活跃度", description = "交易数据统计页面使用")
    public R<List<WeekMarketVO>> liveness(){
        return R.ok(marketService.liveness());
    }


    /**
     * 根据时间段获取销售详情
     * @param marketInfoDTO
     * @return
     */
    @PostMapping("/frame")
    @Operation(summary = "根据时间段获取销售详情", description = "销售详情页面使用")
    public R<SaleMarketInfoVO> marketInfo(@RequestBody MarketInfoDTO marketInfoDTO){
        return R.ok(marketService.marketInfo(marketInfoDTO));
    }

    /**
     * 获取销售订单列表
     * @param marketInfoDTO
     * @return
     */
    @PostMapping("/list")
    @Operation(summary = "获取销售订单列表", description = "销售详情页面使用")
    public R<TableDataInfo> marketList(@RequestBody MarketInfoDTO marketInfoDTO){
        startPage();
        TableDataInfo dataTable = getDataTable(marketService.marketList(marketInfoDTO));
        return R.ok(dataTable);
    }

}
